﻿using OverStore.Runtime.Storage;

namespace OverStore.Runtime.ObjectRepository.CommandSet
{
    /// <summary>
    /// Set of commands allows to peform general data storage operations: read, update, insert and delete.
    /// </summary>
    public interface ICommandSet : IRuntimeComponent
    {
        /// <summary>
        /// Get <see cref="ICommand"/> allows to read object data from storage.
        /// </summary>
        ICommand SelectCommand { get; }

        /// <summary>
        /// Get <see cref="ICommand"/> allows to add new object to storage.
        /// </summary>
        ICommand InsertCommand { get; }

        /// <summary>
        /// Get <see cref="ICommand"/> allows to update existing object in storage.
        /// </summary>
        ICommand UpdateCommand { get; }

        /// <summary>
        /// Get <see cref="ICommand"/> allows to delete object from storage.
        /// </summary>
        ICommand DeleteCommand { get; }
    }
}